<span ng-switch="$ctrl.param.type">
  <date-time-input ng-switch-when="datetime-with-seconds" value="$ctrl.param.normalizedValue"
    on-select="setParamValue" with-seconds="true"></date-time-input>
  <date-time-input ng-switch-when="datetime-local" value="$ctrl.param.normalizedValue"
    on-select="setParamValue"></date-time-input>
  <date-input ng-switch-when="date" value="$ctrl.param.normalizedValue"
    on-select="setParamValue"></date-input>

  <date-time-range-input ng-switch-when="datetime-range-with-seconds" value="$ctrl.param.normalizedValue"
    on-select="setParamValue" with-seconds="true"></date-time-range-input>
  <date-time-range-input ng-switch-when="datetime-range" value="$ctrl.param.normalizedValue"
    on-select="setParamValue"></date-time-range-input>
  <date-range-input ng-switch-when="date-range" value="$ctrl.param.normalizedValue"
    on-select="setParamValue"></date-range-input>

  <span ng-switch-when="enum">
    <select ng-model="$ctrl.param.value" class="form-control">
      <option ng-repeat="option in $ctrl.extractEnumOptions($ctrl.param.enumOptions)" value="{{option}}">{{option}}</option>
    </select>
  </span>
  <span ng-switch-when="query">
    <query-based-parameter param="$ctrl.param" query-id="$ctrl.param.queryId"></query-based-parameter>
  </span>
  <input ng-switch-default type="{{$ctrl.param.type}}" class="form-control" ng-model="$ctrl.param.ngModel">
</span>
